package Guigu2.Equals;

/*
 * 一、回顾 == 的使用
 * == ：运算符
 * 1.可以使用在基本数据类型变量和引用数据类型变量中
 * 2.如果比较的是基本数据类型变量：比较两个变量保存的数据是否相等。（不一定类型要相同）
 *   如果比较的是引用数据类型变量：比较两个对象的地址是否相同，即两个引用是否指向同一个对象实体
 * 
 * 二、equals()方法的使用
 * 1、是一个方法，而非运算符
 * 2、只能适用于引用数据类型
 * 3、Object类中equals()的定义：
 * 	public boolean equals(Object obj) {
        return (this == obj);
    }
    说明：Object类中定义的equals()方法和 == 的作用是相同的，比较两个对象的地址是否相同，即两个引用是否指向同一个对象实体
 * 
 * 
 */
public class EqualsTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//基本数据类型
		int i=10;
		int j=20;
		System.out.println(i==j);//false
		char c = 10;
		System.out.println(i == c);//true
		
		//引用数据类型
		Customer cust1 = new Customer("Tom",18);
		Customer cust2 = new Customer("Tom",18);
		System.out.println(cust1 == cust2);//false
		
		String str1 = new String("atguigu");
		String str2 = new String("atguigu");
		System.out.println(str1 == str2);//false
		System.out.println("***************************");
		System.out.println(cust1.equals(cust2));//false
		System.out.println(str1.equals(str2));//true因为String类重写了equals方法。
	}

}

class Customer
{
	String name;
	int age;
	
	public Customer()
	{
		
	}
	
	public Customer(String name,int age)
	{
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
}